• File: hub_webcnt_chart.php
  • Full Path: C:/htdocs/reeft_gps_test/REEFTintegrationLog/saved/hub_webcnt_chart.php
  • Date Modified: 04/30/2025 7:56 AM
  • File size: 40.76 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php
//======================================================================================
//
// Function: List data
//
// Programmer: JKJ
// Date      : 2020-06-29
//
// Copyright Reeft A/S (c) - 2020
//======================================================================================
//
// http://www.openjs.com/scripts/events/keyboard_shortcuts/
// https://htmlcolorcodes.com/color-names/
// http://www.tl-it.nl/docs/files/jqplot-core-js.html#Series.yaxis
// http://www.jqplot.com/docs/files/jqplot-core-js.html
//
//
// Chart.js
// https://www.chartjs.org/docs/latest/axes/styling.html?h=grid
// https://jsfiddle.net/crabbly/kL68ey5z/ -- PDF save
// https://github.com/emn178/chartjs-plugin-labels - text on pie
// https://emn178.github.io/chartjs-plugin-labels/samples/demo/
//
// https://stackoverflow.com/questions/34479079/how-do-i-find-last-monday-using-momentjs
//
//======================================================================================
// General config
//======================================================================================
	include "config/config.php";

//======================================================================================
// Get input
//======================================================================================


	if (isset($_REQUEST["fromdate"]))  				$fromDate 				= $_REQUEST["fromdate"];
	else $fromDate = 0;

	if (isset($_REQUEST["todate"]))  				$toDate 				= $_REQUEST["todate"];
	else $toDate = 0;

	if (isset($_REQUEST["input_hub_sertyp"]))  		$input_hub_sertyp 	= $_REQUEST["input_hub_sertyp"];
	else {
		$input_hub_sertyp = '';
	}


//======================================================================================
// Check input
//======================================================================================


//======================================================================================
// Set header texts
//======================================================================================



//======================================================================================
// Check if user is logged in?
//======================================================================================
	include "login_check.php";

//======================================================================================
// Get session variables
//======================================================================================
	include "include/getsession.php";


	$datahub_text0108  = 'Jan';

//======================================================================================
// Set language
//======================================================================================
	include "include/set_language.php";

	// Make kl lowercase
	$datahub_text0108_lower = strtolower($datahub_text0108);


//======================================================================================
// Set defaults
//======================================================================================


?>
<!DOCTYPE html>
<html lang="en">
<head>
	<title><?php echo $datahub_text0001 ?></title>

	<meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="REEFTvisual - Stoptime">
    <meta name="author" content="REEFT A/S">
    <link rel="icon" href="images/favicon.ico">


    <link href="css/custom.css" rel="stylesheet">

    <!-- Bootstrap / jQuery -->
    <link href="css/bootstrap4.3.1/css/bootstrap.custom.min.css" rel="stylesheet">
    <!--<link href="css/bootstrap4.3.1/css/themes/bootstrap.custom.min.css" rel="stylesheet">-->

    <link href="css/style.css" rel="stylesheet">

	<link href="css/bootstrap4.3.1/css/normalize.css" rel="stylesheet" type="text/css">

	<link href="css/sticky-footer.css" rel="stylesheet" type="text/css">

	<script src="css/fontawesome6.5.1/js/all.min.js"></script>
	<script src="css/fontawesome6.5.1/js/sharp-light.min.js"></script>
	<script src="css/fontawesome6.5.1/js/sharp-regular.min.js"></script>
	<script src="css/fontawesome6.5.1/js/sharp-solid.min.js"></script>
	<script src="css/fontawesome6.5.1/js/sharp-thin.min.js"></script>
	

	<link href="css/bootstrap_animation/css/animate.css" rel="stylesheet" type="text/css">

	<link href="javascript/chosen/chosen.css" rel="stylesheet" type="text/css">

	<link href="javascript/jquery-ui/jquery-ui.min.css" rel="stylesheet" type="text/css"/>

    <script src="javascript/jquery-2.2.4.min.js"></script>

    <script src="css/bootstrap4.3.1/js/popper.js"></script>
    <script src="css/bootstrap4.3.1/js/bootstrap.min.js"></script>

	<script src="javascript/jquery-ui/jquery-ui.min.js"></script>
    <script src="javascript/jquery.ui.touch-punch.min.js"></script>

	<!--<script src="javascript/moment.min.js"></script>-->
	<script src="javascript/moment-with-locales.min.js"></script>
	<script src="javascript/moment-duration-format.min.js"></script>

	<script src="javascript/number_format/jquery.number.min.js"></script>

	<script src="javascript/jquery.scrollTo.min.js"></script>

	<script src="javascript/bootstrap-datetimepicker4/build/js/tempusdominus-bootstrap-4.min.js"></script>
	<link href="javascript/bootstrap-datetimepicker4/build/css/tempusdominus-bootstrap-4.min.css" rel="stylesheet" type="text/css">

	<link href="javascript/daatatables/media/css/jquery.dataTables.min.css" rel="stylesheet" type="text/css">
	<link href="javascript/daatatables/media/css/fixedHeader.dataTables.min.css" rel="stylesheet" type="text/css">
	<link href="javascript/daatatables/Buttons-1.4.2/css/buttons.dataTables.min.css" rel="stylesheet" type="text/css">

    <script src="javascript/daatatables/media/js/jquery.dataTables.min.js"></script>
    <script src="javascript/daatatables/media/js/dataTables.fixedHeader.min.js"></script>
	<script src="javascript/daatatables/Buttons-1.4.2/js/dataTables.buttons.min.js"></script>
	<script src="javascript/daatatables/Buttons-1.4.2/js/buttons.flash.min.js"></script>
	<script src="javascript/daatatables/JSZip-2.5.0/jszip.min.js"></script>
	<script src="javascript/daatatables/pdfmake-0.1.53/pdfmake.min.js"></script>
	<script src="javascript/daatatables/pdfmake-0.1.53/vfs_fonts.js"></script>
	<script src="javascript/daatatables/Buttons-1.4.2/js/buttons.html5.min.js"></script>
	<script src="javascript/daatatables/Buttons-1.4.2/js/buttons.print.min.js"></script>

	<script src="javascript/chosen/chosen.jquery.min.js" type="text/javascript"></script>

	<script src="javascript/viewer-master/dist/viewer.min.js"></script>
	<link  href="javascript/viewer-master/dist/viewer.min.css" rel="stylesheet">

	<script src="javascript/ajaxq/ajaxq.js"></script>

	<link id="scrollUpTheme" rel="stylesheet" href="javascript/scrollup-master/dist/css/themes/image.css">
	<script src="javascript/scrollup-master/dist/jquery.scrollUp.js"></script>
	<script src="javascript/shortcut.js"></script>

	<script type="text/javascript" src="javascript/chart.js_master/chart.min.js"></script>
	<script type="text/javascript" src="javascript/chart.js_master/utils.js"></script>
	<script type="text/javascript" src="javascript/jspdf.min.js"></script>
	<script type="text/javascript" src="javascript/chart.js_master/chartjs-plugin-datalabels.min.js"></script>

	<script src="javascript/_reeft_js/set_font_awesome_icon_type.js"></script>

<style>


.image-style-custom
{
	filter: drop-shadow(6px 6px 5px black)
}

.dropdown-item.active {
	background-color: ForestGreen;
}

.btn-custom-wide {
	height:60px;
	width:210px;
}


.small-text {
	font-size: 8px;
}

</style>

<script language="JavaScript">

//=============================================================================
// Globals
//=============================================================================

	$(function () {
	  $.scrollUp({
		scrollName: 'scrollUp', // Element ID
		//topDistance: '1800', // Distance from top before showing element (px)
		//topSpeed: 300, // Speed back to top (ms)
		scrollDistance: '300', // Distance from top before showing element (px)
		scrollSpeed: 300, // Speed back to top (ms)
		animation: 'fade', // Fade, slide, none
		animationInSpeed: 200, // Animation in speed (ms)
		animationOutSpeed: 200, // Animation out speed (ms)
		scrollText: false, //'Scroll to top', // Text for element
		activeOverlay: false, // Set CSS color to display scrollUp active point, e.g '#00FFFF'
	  });
	});

	load = 0;

	//-----------------------------------------------------------------------------------------
	// Input params
	//-----------------------------------------------------------------------------------------
	var global_fromDate	 					= '<?php echo $fromDate ?>';
	var global_toDate	 					= '<?php echo $toDate ?>';


	var global_sertyp						= '<?php echo $input_hub_sertyp ?>'

	if ( global_sertyp == '' ) {
		global_sertyp = '*ALL';
	}

	//-----------------------------------------------------------------------------------------

	//=============================================================================
	// Misc chart setup
	//=============================================================================
	var	DFT_DISPLAY_PARETO_ON_BAR_CHART 					= 'N';
	var	DFT_DISPLAY_PARETO_ON_BAR_CHART 					= 'Y';

	var	DFT_DISPLAY_TICKS_ON_RIGHT_SIDE_BAR_CHART_FOR_TIME 	= 'Y';
	var	DFT_DISPLAY_LABLES_ON_PARETO_CHART_ON_BAR_CHART 	= 'Y';

	if  ( DFT_DISPLAY_PARETO_ON_BAR_CHART == 'Y' ) {
		var displayPareto = true;
	} else {
		var displayPareto = false;
	}

	if  ( DFT_DISPLAY_LABLES_ON_PARETO_CHART_ON_BAR_CHART == 'Y' ) {
		var dftDisplayLablesOnParetoChartOnBarChart = true;
	} else {
		var dftDisplayLablesOnParetoChartOnBarChart = false;
	}


	if  ( DFT_DISPLAY_TICKS_ON_RIGHT_SIDE_BAR_CHART_FOR_TIME == 'Y' ) {
		var dftDisplayTicksOnRightSideBarChartForTime = true;
	} else {
		var dftDisplayTicksOnRightSideBarChartForTime = false;
	}


	//-----------------------------------------------------------------------------------------
	// Reset chart objects
	//-----------------------------------------------------------------------------------------
	var chart_bar 		= null;
	var chartPDFname 	= null;

	//-----------------------------------------------------------------------------------------
	// Move PHP arrays to javascript
	//-----------------------------------------------------------------------------------------
	var DFT_CANVAS_HEIGHT				= '<?php echo $DFT_CANVAS_HEIGHT; ?>';

	var DFT_DURATIONTIME				= <?php echo $DFT_DURATIONTIME; ?>;
	var DFT_PIE_TITLE_HEADER_DISPLAY	= '<?php echo $DFT_PIE_TITLE_HEADER_DISPLAY; ?>';
	var DFT_LEGEND_POSITION_DISPLAY		= '<?php echo $DFT_LEGEND_POSITION_DISPLAY; ?>';
	var DFT_LEGEND_POSITION				= '<?php echo $DFT_LEGEND_POSITION; ?>';

	//-----------------------------------------------------------------------------------------
	// Msic chart setup
	//-----------------------------------------------------------------------------------------

	var globalbarData  			= null;
	var globalbarData1 			= null;
	var globalbarColor 			= null;
	var globalbarLabelText 		= null;

	//-----------------------------------------------------------------------------------------
	// General chart settings - also look in .ready for more settings and hiding
	//-----------------------------------------------------------------------------------------

	durationTime = 2000;
	pie_title_header_display = true;
	legend_position			 = 'top';
	legend_position_display	 = true;

	//-----------------------------------------------------------------------------------------

	var pieData = null;
	var pieColor = null;
	var pieToolTip = null;
	var maxValueBar = 0;

//=============================================================================
// Get data for reason
//=============================================================================
function processReasonData()
{

	fromDate = '<?php echo $fromDate ?>';
	toDate = '<?php echo $toDate ?>';

	bar_title_headerText = '<?php echo $datahub_text0218 ?>';
	maxValueBarAdjust = 10;
	maxValueBarAdjustMobile = 5;
	pointLabelsShow = false;
	barLabelText = '<?php echo $datahub_text0155 ?>';
	yAxesDisplay = false;
	gridLinesDisplay = false;
	chartPDFname = 'webservice_usage.pdf';

	// Set bar header
	bar_title_header = bar_title_headerText ;

	var search_arg 	= $('#input-HUB_SERTYP').val();
	var hub_sertyp 	= $('#input-HUB_SERTYP').val();


	var searchBy	= 'SERTYP';

	if ( search_arg == '*ALL' ) {
		var search_arg 	= '';
		var searchBy	= '';
		var hub_sertyp 	= '';
	}

	// Create param list
	parmData = 'hub_WEBNAM='  + ''
			 + '&myPageGoTo=' + '0'
			 + '&myOffSet='   + '0'
			 + '&myPageSize=' + '500'
			 + '&hub_sertyp=' + hub_sertyp
			 + '&search_arg=' + search_arg
			 + '&callType='	  + '*CHART'
			 + '&orderBy='    + '2'
			 + '&searchBy='   + searchBy
			 ;

	$.ajax({
		url: "HUB_WEBCNT_maintain_get.php",
		type: "GET",
		data: parmData,
		dataType: "json",
		cache: false,
	beforeSend: function( xhr ) {

	}
	})
	.done(function( jsonData ) {

		var returnCode 				= jsonData.header.returnCode;

		// Define arrays
		arr 		= [];
		arr1 		= [];
		arr2 		= [];
		arrColor 	= [];
		arrToolTip 	= [];

		total_HUB_COUNT	= 0;

		myID = '';
		c = 0;
		default_color = '';
		var myID = 'all-button-detail';

		var headerText01 = '<?php echo $datahub_text0147 ?>';
		var headerText02 = '<?php echo $datahub_text0148 ?>';

		// Reset
		HTMLline02 = '<table id="REEFTvisual_data" class="table table-bordered table-striped table-hover">';

		HTMLline02  +=	'<thead>'
					+ 	'<tr class="bg-primary text-white font-weight-bold text-left">'
					+	'<th>'
					+	'<?php echo $datahub_text0178 ?>'
					+	'</th>'
					+	'<th>'
					+	headerText01
					+	'</th>'
					+	'<th>'
					+	headerText02
					+	'</th>'
					+	'<th class="text-left">'
					+	'</th>'
					+	'</tr>'
					+	'</thead>'
					+	'<tbody>'
					;

		// Get what to show
		current_HUB_SERTYP = $('#input-HUB_SERTYP').val();

				var myCMPNO				= jsonData.header.myCMPNO;
				var myCMPNO_Name		= jsonData.header.myCMPNO_Name;
				var myFile_name			= jsonData.header.myFile_name
				var myFile_description	= jsonData.header.myFile_description

				var returnCode 			= jsonData.header.returnCode;
				var returnMsg 			= jsonData.header.returnMsg;
				var entries_found 		= jsonData.header.entries_found;
				var response_sec 		= jsonData.header.response_sec;

				var myTotalRecordsFound = jsonData.header.myTotalRecordsFound;
				var myTotalPages 		= jsonData.header.myTotalPages;
				var myPageSize 			= jsonData.header.myPageSize;


				// Response time
				$('#response-time-text').html( 'Response time: ' + response_sec ).css('font-size','0.8em');


				// Set Company and file information
				if ( myCMPNO != '' ) {
					$('#data-hub-company-information').html( '<span title="' + myFile_name + ' - ' + myFile_description + '">' + myCMPNO_Name + ' (' + myCMPNO + ')' + '</span>' ).css('font-size','1.3em');
				}



				// Create header buttons

				var HTMLlineButtons 		= '';
				var selectedButtonClass 	= 'btn-dark';

				$.each( jsonData.header_buttons, function( index, object ){

					var buttonLine   = object.buttonLine;
					var buttonCount  = object.buttonCount;
					var buttonPages  = object.buttonPages;

					var save_buttonLine = buttonLine;

					if ( buttonLine == '*NONE' ) {
						buttonLine = 'No type';
					}

					var selectButtonLineID 		= 'select-button-line-id-' + buttonLine;


					HTMLlineButtons 		+=	'<button title="Search for..." type="button" style="cursor:default" id="' + selectButtonLineID + '" class="btn ' + selectedButtonClass + ' select-button-line btn-sm mr-1 mb-1" onclick="setSearchWord(\'' + save_buttonLine + '\',\'' + '0' + '\',\'' + '' + '\',\'' + buttonPages + '\',\'' + buttonCount + '\')">'
											+ 	' <b>' + buttonLine + '</b>' + ' (' + buttonCount + ')'
											+	'</button>'

				});

					var selectButtonLineID 		= 'select-button-line-id-' + 'reset' + '_';

					HTMLlineButtons 		+=	'<button title="Search for..." type="button" style="cursor:default" id="' + selectButtonLineID + '" class="btn ' + selectedButtonClass + ' select-button-line btn-sm mr-1 mb-1" onclick="setSearchWord(\'' + '*ALL' + '\',\'' + '0' + '\',\'' + '' + '\',\'' + '0' + '\',\'' + '0' + '\')">'
											+	'Show all'
											+	'</button>'


				$('#data-result-button-lines').html(HTMLlineButtons);




		$.each( jsonData.pareto, function( index, object ){

		if ( $('#input-HUB_SERTYP').val() == '*ALL' ) {
			current_HUB_SERTYP = object.HUB_SERTYP;
		}

		if ( current_HUB_SERTYP == object.HUB_SERTYP ) {


			var chart_HUB_COUNT				= object.HUB_COUNT;
			var chart_HUB_SERTYP			= object.HUB_SERTYP;

			var key_HUB_WEBNAM				= object.HUB_WEBNAM;

			// Reason code data
			var chart_HUB_WEBNAM			= object.HUB_WEBNAM;
			var default_color				= object.HUB_CHRCOL;
			var char_HUB_CHRTXT				= object.HUB_CHRTXT	;

			var total_chart_HUB_COUNT		= object.HUB_COUNT;
			var calc_sum					= object.calc_sum;
			var pareto_par					= object.calc_par;
			var pareto_pct					= object.calc_pct;

//			console.log(chart_HUB_COUNT + ' ' + chart_HUB_SERTYP + ' ' + pareto_pct + ' ' );

					// Just in case
					if ( default_color == '' ) {
						default_color = 'tomato';
//						console.log('Default color added...')
					}

					if ( displayPareto == false ) {
						var pareto_pct = -1000;
					}

					var color = default_color;

					// Set array
					arr.push(parseInt(chart_HUB_COUNT));

					if ( char_HUB_CHRTXT != '' ) {
						chart_HUB_WEBNAM = char_HUB_CHRTXT;
					}

					arr1.push(chart_HUB_WEBNAM + ' (' + chart_HUB_COUNT + ')' );
					arr2.push(parseFloat(pareto_pct));


					arrColor.push(color);
					arrToolTip.push('none');

					// Total
					total_HUB_COUNT = parseInt(total_HUB_COUNT) + parseInt(chart_HUB_COUNT); // Add to total

					// Button id
					c++;
					myID = 'trans-button-' + c;

					HTMLline02 +=	'<tr>'
							   +	'<td class="text-left">'
							   +	chart_HUB_WEBNAM
							   +	'</td>'
							   +	'<td class="text-center">'
							   +	chart_HUB_COUNT
							   +	'</td>'
							   +	'<td class="text-center">'
							   +	chart_HUB_SERTYP
							   +	'</td>'
							   +	'<td class="text-left">'
							   +	'<button class="btn btn-primary trans-button-list line-trans-button-list" id="' + myID + '" onclick="showTranscations(\'' + chart_HUB_WEBNAM + '\'' + ',\'' + chart_HUB_WEBNAM + '\'' + ',\'' + myID + '\')">' + '<?php echo $datahub_button_show_details ?>' + '</button>'
							   +	'</td>'
							   +	'</tr>'
							   ;

		}

		});


		HTMLline02 +=	'</tbody>'
				   +	'<tfooter>'
				   +	'<tr class="bg-primary text-white">'
				   +	'<td class="text-left font-weight-bold">'
				   +	'Total'
				   +	'</td>'
				   +	'<td class="text-center font-weight-bold">'
				   +	total_HUB_COUNT
				   +	'</td>'
				   +	'<td class="text-center font-weight-bold">'
				   +	'</td>'
				   +	'<td class="text-center font-weight-bold">'
				   +	''
				   +	'</td>'
				   +	'</tr>'
				   ;


		HTMLline02  +=	'</tfooter>'
					+	'</table>'



		// Show yourself to the world, you little fvcker
		$('#data-result').html(HTMLline02);


		setDataTablesReason();

		maxValueBar = Math.max.apply(Math,arr);
		maxValueBar = parseInt(maxValueBar) + 1;

		// Create chart
		barData = arr;
		barData1 = arr1;
		barData2 = arr2;
		barColor = arrColor;
		barToolTip = arrToolTip;

		// Save for update data
		globalbarData  		= barData;
		globalbarData1 		= barData1;
		globalbarData2 		= barData2;
		globalbarColor 		= barColor;
		globalbarLabelText 	= barLabelText;

		maxValueBar = Math.max.apply(Math,barData) + maxValueBarAdjustMobile;

		// Reset messasge area
		$('#canvas-wrapper-message').html('');

		// Create chart
		createChart_reason_bar();




	})
	.always(function( jsonData ) {

		//console.log('I am always..');


	})
	.fail(function( xhr, ajaxOptions, thrownError ) {
		console.log('I am failed..');
		console.log( xhr );

	});

}

//=============================================================================
// Create chart - reason code
//=============================================================================
function createChart_reason_bar() {


	$('#downloadPdf').removeClass('d-none');
	maxRotationValue = 75;  // No rotate
	minRotationValue = 75;

	renderText = '#000';
	renderText = '#fff';

		var color = barColor;
		var barChartData = {
			labels: barData1,
			datasets: [
			{
				label: barLabelText,
				backgroundColor: barColor,
				borderWidth: 1,
				data: barData
			}
			]
		};

    // Setup the chart (make sure config is global)
    //const config = {
    config = {
      data: {
		labels: barData1,
		datasets:
		[{
			yAxisID: 'y1',
			label: '<?php echo $datahub_text0147 ?>',
			type: 'bar',
			data: barData,
			backgroundColor: barColor,
			borderWidth: 1,
			order: 10,
			barPercentage: 0.8,
			categoryPercentage: 0.8,
		datalabels: {
				display: false,
		}
		},
		{
				yAxisID: 'y2',
				type: 'line',
				label: 'Pct',
				data: barData2,
				borderColor: '#2B6699',
				order: 5,
				cubicInterpolationMode: 'monotone',
				tension: 0.4,
			datalabels: {
				display: dftDisplayLablesOnParetoChartOnBarChart,
				backgroundColor: '#2B6699',
				borderColor: '#000',
				borderWidth: 1,
				borderRadius: 4,
				color: 'white',
				font: {
				  weight: 'bold'
				},
				//formatter: Math.round,
				padding: 4,
				formatter: function(value, context) {
					let new_value = value.toFixed(0) + '%';
					return new_value;
				}
			},
       }
	  ]},
		options: {
		responsive: true,
		maintainAspectRatio: false,
		plugins: {
			tooltip: {
						enabled: true,
						yPadding: 10,
						xPadding: 10,
						backgroundColor: '#000',
						titleFontColor: '#000',
						bodyFontColor: '#000',
						borderColor: '#ccc',
						borderWidth: 2,
						position: 'nearest',
						callbacks: {
                        label: function(tooltipItem) {

							if (tooltipItem.datasetIndex === 0) {

								// Tooltip for the bar dataset
								return "<?php echo $datahub_text0147 ?>: " + tooltipItem.raw;
							}
							else if (tooltipItem.datasetIndex === 1) {
								// Tooltip for the line dataset
								return 'Percentage: ' + tooltipItem.raw + '%';
							}

                        },
                    }
					},
		  // Change options for ALL labels of THIS CHART
				 legend:
					 {
						 display: false,
						 position: 'bottom',
					 },

				 title: {
						 display: true,
						 text: bar_title_header,
						 font: {
							 size: 40,
						 }
					 },
				  labels: {
					 display: true,
					 render: 'value',
					 fontSize: 14,
					 fontStyle: 'bold',
					 fontColor: renderText,
					 }
				 },
		scales:	{
			y1: {
				type: 'linear',
				position: 'left',
				beginAtZero: true,
				title: {
					display: true,
					text: '<?php echo $datahub_text0147 ?>'
				},
				ticks: {
					display: dftDisplayTicksOnRightSideBarChartForTime,
					beginAtZero: false,
					fontColor: '#ffbaa2',
				},
				grid: {
					display: false
				}

			},
			 y2: {
				 display: displayPareto,
				 type: 'linear',
				 position: 'right',
				 min: 0,
				 max: 100,
				 ticks: {
						  beginAtZero: true,
		                  stepSize: 10,
						  fontColor: '#ffbaa2',
						  callback: function(value, index, values) {
							return value + ' %';
						  }
						  },
				title: {
					display: true,
					text: 'Pareto %'
				}
				},
				xAxes:
					{
						ticks:
						{
						autoSkip: false,
						maxRotation: 30,
						minRotation: 25
						}
					}
			}
		 }
		};

    // Render init block
	var ctx = document.getElementById('show-chart-here').getContext('2d');
	chart_bar = new Chart(ctx,config);

	// Hide Pareto chart
	toggleParetoVisibility(false)


}

//=============================================================================
// Show / hide pareto
//=============================================================================
function toggleParetoVisibility(showPareto) {

    if (!showPareto) {

		// Hide the y2 scale and dataset
        config.options.scales.y2.display = false;
        config.data.datasets = config.data.datasets.filter(dataset => dataset.yAxisID !== 'y2');

		// Hide button
		$('#hide-pareto-button').addClass('d-none');
		$('#show-pareto-button').removeClass('d-none');

    } else {

		// Hide button
		$('#hide-pareto-button').removeClass('d-none');
		$('#show-pareto-button').addClass('d-none');

        // Show the y2 scale and dataset
        config.options.scales.y2.display = true;

        // Re-add the y2 dataset if it was removed
        if (!config.data.datasets.find(dataset => dataset.yAxisID === 'y2')) {
            config.data.datasets.push({
                yAxisID: 'y2',
                type: 'line',
                label: 'Pct',
                data: barData2,
                borderColor: '#2B6699',
                order: 5,
                cubicInterpolationMode: 'monotone',
                tension: 0.4,
                datalabels: {
                    display: dftDisplayLablesOnParetoChartOnBarChart,
                    backgroundColor: '#2B6699',
                    borderColor: '#000',
                    borderWidth: 1,
                    borderRadius: 4,
                    color: 'white',
                    font: { weight: 'bold' },
                    padding: 4,
                    formatter: function (value, context) {
                        return value.toFixed(0) + '%';
                    }
                }
            });
        }
    }

    // Update the chart
    chart_bar.update();
}

//=============================================================================
// Set datatables
//=============================================================================
function setDataTablesReason()
{

    $('#REEFTvisual_data').DataTable({
        "responsive": true,
		"fixedHeader": false,
		"lengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
		"iDisplayLength": 25,
        "processing": true,
		"dom": '<"toolbar">lfi<bottom>Bp<"clear">',
        "order": [[ 1, "desc" ]],
		"columnDefs": [
				{
				"targets": [ 3 ],
				"visible": true,
				"searchable": false,
				 "orderable": false
				}

		],
		"language":
		{

					"sProcessing":   "<?php echo $datahub_datatable_Processing ?>",
					"sLengthMenu":   "<?php echo $datahub_datatable_LengthMenu ?>",
					"sZeroRecords":  "<?php echo $datahub_datatable_ZeroRecords ?>",
					"sInfo":         "<?php echo $datahub_datatable_Info ?>",
					"sInfoEmpty":    "<?php echo $datahub_datatable_InfoEmpty ?>",
					"sInfoFiltered": "<?php echo $datahub_datatable_InfoFiltered ?>",
					"sInfoPostFix":  "<?php echo $datahub_datatable_InfoPostFix ?>",
					"sLoadingRecords": "<?php echo $datahub_datatable_Processing ?>",
					"sSearch":       "<?php echo $datahub_datatable_Search ?>",
					"sUrl":          "<?php echo $datahub_datatable_Url ?>",
					"oPaginate": {
						"sFirst":    "<?php echo $datahub_datatable_First ?>",
						"sPrevious": "<?php echo $datahub_datatable_Previous ?>",
						"sNext":     "<?php echo $datahub_datatable_Next ?>",
						"sLast":     "<?php echo $datahub_datatable_Last ?>"
					}
		},
        "rowCallback": function(row, data, index)
		{



		},
        "preDrawCallback": function(settings)
		{
		},
		"initComplete": function ()
		{

		},
		"buttons": 	[
					{
						title: 'REEFTvisual_data_PDF',
						extend: 'pdf',
						text: '<img src="images/pdf_logo.png" height="25"> PDF',
						orientation: 'landscape',
						exportOptions: {
						modifier: {
							page: 'all'
							}
						}
					},
					{
						title: 'REEFTvisual_data_Excel',
						extend: 'excel',
						text: '<img src="images/microsoft_excel_logo.png" height="25"> Excel'
						},
						{
						extend: 'copy',
						text: '<img src="images/copy.png" height="25"> Copy to Clipboard'
						}
					]
    });


	// Set header

	$('#REEFTvisual_data').append('<caption style="caption-side: top"><div class="text-center font-weight-bold">' + bar_title_header + '</div></caption>');

}

//=============================================================================
// Log off
//=============================================================================
function signoff()
{

	window.location.href = "logout.php";

}

//=============================================================================
// Load page
//=============================================================================
function loadPage(url, p1, p2, p3)
{

	window.location.href = url;

}

//=============================================================================
// Set default date
//=============================================================================
function setDefaultDate( defaultHours ) {


	// Set default from/to date
	default_fromDate 	= moment().subtract(defaultHours, 'hours').format("YYYY-MM-DD HH:mm");

	$('#fromdate').datetimepicker('date', default_fromDate );
	$('#fromdateX').addClass('animated pulse border border-danger rounded');


	// After animation
	$('#fromdateX').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',

		function() {
				$('#fromdateX').removeClass( 'animated pulse border border-danger rounded' );
		}

	);

	default_toDate 	= moment().add(0, 'days').add(10, 'minutes').subtract(0, 'year').format("YYYY-MM-DD HH:mm");
	$('#todate').datetimepicker('date', default_toDate );

	$('#fromdate').datetimepicker('date', default_fromDate );
	$('#fromdateX').addClass('animated pulse border border-danger rounded');

	$('#todate').datetimepicker('date', default_toDate );


}


//=============================================================================
// Scroll to something
//=============================================================================
function scrollToSomething( target )
{

	thisID = '#' + target;
	$.scrollTo( thisID, 1000);

}

//=============================================================================
// Create PDF
//=============================================================================
function downloadPDF() {

	// Get size of report page
	var reportPageHeight = $('#canvas-wrapper').innerHeight();
	var reportPageWidth = $('#canvas-wrapper').innerWidth();


  // Create a new canvas object that we will populate with all other canvas objects
	var pdfCanvas = $('<canvas />').attr({
		id: "canvaspdf",
		width: reportPageWidth,
		height: reportPageHeight
	});

	// Keep track canvas position
	var pdfctx = $(pdfCanvas)[0].getContext('2d');
	var pdfctxX = 0;
	var pdfctxY = 0;
	var buffer = 100;

	// For each chart.js chart
	$("canvas").each(function(index) {

		// Get the chart height/width
		var canvasHeight = $(this).innerHeight();
		var canvasWidth = $(this).innerWidth();

		// Draw the chart into the new canvas
		pdfctx.drawImage($(this)[0], pdfctxX, pdfctxY, canvasWidth, canvasHeight);
		pdfctxX += canvasWidth + buffer;

		// Our report page is in a grid pattern so replicate that in the new canvas
		if (index % 2 === 1) {
			pdfctxX = 0;
			pdfctxY += canvasHeight + buffer;
		}

	});

	// Create new pdf and add our new canvas as an image
	var pdf = new jsPDF('l', 'pt', [reportPageWidth, reportPageHeight]);
	pdf.addImage($(pdfCanvas)[0], 'PNG', 0, 0);

	// download the pdf
	pdf.save(chartPDFname);

}

//=============================================================================
// Make first letter uppercase
//=============================================================================
function capitalizeFirstLetter(string) {

  return string.charAt(0).toUpperCase() + string.slice(1);

}

//=============================================================================
// Reset messasge
//=============================================================================
function resetMessage()
{

	$('#message-text').html('').removeClass('border border-danger rounded font-weight-bold mt-2 mb-1 p-2');

}


//=============================================================================
// Full screen popup
//=============================================================================
function popUpCenter(url, p1, p2, p3)
{

	var v1_w  = screen.availWidth;
	var v1_h  = screen.availHeight;

	if ( parseInt(v1_w) > 1800 ) {
		v1_w = 1800;
		v1_h = v1_h - 200;
		v1_center = v1_w/0.8;
	}

	// Center popup as good as possible
	var left = (screen.width - v1_w) / 2;
	var top = (screen.height - v1_h) / 4;

	var winname = 'win_' + url;

	params  = 'width='+v1_w;
	params += ', height='+v1_h;
	params += ', top=' + top + ', left=' + left;
	params += ', fullscreen=yes';
	params += ',scrollbars=1';

	overview_win = window.open(url,winname, params);
	if (window.focus) {overview_win.focus()}
	return false;

}


//=============================================================================
// screen popup - center - bigger
//=============================================================================
function popUpCenterBig(url, p1, p2, p3)
{

	var v1_w  = screen.availWidth;
	var v1_h  = screen.availHeight;

	// Get 25%
	v1_w_pct = v1_w * 0.18;

	v1_w_new = v1_w - v1_w_pct;


	if ( v1_w_new < 1 ) {
		v1_w_new	= 1800;
	}

	v1_w = v1_w_new;
	v1_h = v1_h - 200;
	v1_center = v1_w/0.8;

	// Center popup as good as possible
	var left = (screen.width - v1_w) / 2;
	var top = (screen.height - v1_h) / 4;

	var winname = 'win_' + url;

	params  = 'width='+v1_w;
	params += ', height='+v1_h;
	params += ', top=' + top + ', left=' + left;
	params += ', fullscreen=yes';
	params += ',scrollbars=1';

	// Create URL
	url = url + '?webnam=' + p1 + '&input_hub_sertyp=' + p3;

	if ( p2 == 'new-tab' ) {
		overview_win = window.open(url,winname);
	} else {
		overview_win = window.open(url,winname, params);
	}

	if (window.focus) {overview_win.focus()}
	return false;

}

//=============================================================================
// Set search word
//=============================================================================
function setSearchWord( input_search, input_goto, input_button_number, input_totalPages, input_count )
{

	// Set webserver type
	$('#input-HUB_SERTYP').val( input_search );

	chart_bar.destroy();


	processReasonData();

}

//=============================================================================
// Show transcations
//=============================================================================
function showTranscations(url, p1, p2, p3)
{

	var url = 'hub_webtrn_maintain.php';
	var p1  = p1;
	var p2  = 'new-win';
	var p3  = '';

	popUpCenterBig(url, p1, p2, p3);

}


//=============================================================================
// Set clock
//=============================================================================
function updateClock() {

	$('#current-time').html(moment().format('DD-MM-YYYY HH:mm:ss'));

}

//=============================================================================
// jQuery - Ready
//=============================================================================
$(document).ready(function()
{

	// Set webserver type
	$('#input-HUB_SERTYP').val( global_sertyp );


	// Set size of canvas
	$('#canvas-wrapper').css('height','600px');

	//-----------------------------------------------------------------------
	// Start the clock
	//-----------------------------------------------------------------------
		updateClock();
		setInterval(function() {
			updateClock();
		}, 1000);
	//-----------------------------------------------------------------------

	// Set input fields
	$('#fromdate').val('<?php echo $fromDate ?>');
	$('#todate').val('<?php echo $toDate ?>');


	//-----------------------------------------------------------------------
	// Set font awesome icon type
	//-----------------------------------------------------------------------
		// Value is from config/config.php
		var iconType = '<?php echo $DFT_SET_FONT_AWESOME_ICON_TYPE ?>';
		setFontAwesomeIconType( iconType );
	//-----------------------------------------------------------------------


	//-----------------------------------------------------------------------
	// Get some chart data
	//-----------------------------------------------------------------------
	processReasonData();

	// Set short cuts
	shortcut.add("Esc",function() {
		window.close();
	});


	// Register the plugin to all charts:
	Chart.register(ChartDataLabels);


});
// -->
</script>

</head>

<body>

<div class="container-fluid mt-2 pl-3 pr-3">

		<input class="d-none" type="text" id="reference-code-input">
		<input class="d-none" type="text" id="reference-name-input">
		<input class="d-none" type="text" id="chart-mode">
		<input class="d-none" type="text" id="pareto-visible">



		<input class="d-none" type="text" id="input-HUB_SERTYP">


		<div class="row">
			<div class="col-2">
				<img src="images/customer-logo.png" class="img-fluid" alt="Customer Logo">
			</div>
			<div class="col-8 text-center <?php echo $DFT_CLOCK_SIZE ?>">
				<i title="<?php echo $session_rand ?>" class="font-awesome-pseudo-class fa-thin fa-clock"></i>&nbsp;&nbsp;<span id="current-time"><?php echo date('d-m-Y h:i:s') ?></span>
			</div>
			<div class="col-2 text-right">
				<div id="home-button" class="btn btn-primary" onclick="window.close()" title="<?php echo $visual_go_to_my_dear_home ?>"><i class="font-awesome-pseudo-class fa-2x fa-thin fa-home"></i></div>
			</div>
		</div>


		<div class="row">
			<div class="col-12 text-center">
				<div id="data-hub-company-information"></div>
			</div>
		</div>



	<div class="card border-muted mt-1 mb-2" id="card-result-area">

			<div class="card-header text-muted mb-2">
				<div class="row mt-2">

					<div class="col-4 h4">
						<i class="font-awesome-pseudo-class fa-thin fa-alicorn"></i> <?php echo "$datahub_text0142"; ?>
					</div>

					<div class="col-4 text-center">
						<div id="data-result-button-lines"></div>
					</div>

					<div class="col-4 text-right">
						<div id="response-time-text"></div>
					</div>

				</div>
			</div>

		<div class="row mb-2">
		<div class="col text-right">
			<button type="button" id="show-pareto-button" class="btn btn-primary mr-1"   onclick="toggleParetoVisibility(true)">Show pareto</button>
			<button type="button" id="hide-pareto-button" class="btn btn-warning mr-1"   onclick="toggleParetoVisibility(false)">Hide pareto</button>
			<button type="button" id="downloadPdf" class="btn btn-success d-none" onclick="downloadPDF()">Download PDF</button>
		</div>
		</div>


			<div>
				<div class="row">
					<div class="col-12 text-right">
					</div>
				</div>

				<div class="row">
					<div class="col mt-2">
						<div id="canvas-wrapper-message"></div>
						<div id="canvas-wrapper" style="width:100%" class="">
							<canvas id="show-chart-here"></canvas>
						</div>
					</div>
				</div>
			</div>

	</div>


	<div class="card border-muted mb-2" id="card-result-area-table-1">

		<!-- table with sum figures -->
		<div class="card-body" id="table-header-data">

			<div id="html-buttons-goes-here" class="mb-2 text-center"></div>

			<div id="data-result"></div>
		</div>

	</div>

	<div class="card border-muted mb-2 d-none" id="card-result-area-table-2">

		<div  class="d-none" id="sql"></div>
		<div  class="d-none" id="ent"></div>

		<!-- table with detail transactions -->
		<div class="card-body">
			<div id="data-result-trans"></div>
		</div>

	</div>


	<!-- pseodu empty col -->
	<div class="col-2 div-spreder">
	</div>

	</div>



	<!-- ======================================================================================== -->
	<!-- Might surface if an ajax call fails -->
	<!-- ======================================================================================== -->
	<div id="error-text-wrapper" class="d-none">
	<div class="border border-danger rounded p-2 bg-light" id="error-text-ajax-call"></div>
	</div>
	<!-- ======================================================================================== -->


</div>

<!-- Set footer -->
<span id="footer-id">
<?php
	include "include/footer.php";
?>
</span>
<!-- Set footer -->

<!-- ========================================================================== -->
<!--                                M O D A L S                                 -->
<!-- ========================================================================== -->


</body>
</html>